/**
 * 
 */
package hihocoder;

import java.util.Scanner;

/**
 * @author zhongfang
 *
 */
public class 回文子串的数量 {

	public static int getCount(String string) {
		int sum = 0;
		int n = string.length();
		for (int i = 0; i < n; i++) {
			// 奇数长
			int j = i - 1, k = i + 1;
			int len = getLen(string, j, k);
			sum += len + 1;
		}
		for (int i = 1; i < n; i++) {
			// 偶数长
			int j = i - 1;
			if (string.charAt(i) == string.charAt(j)) {
				j--;
				int k = i + 1;
				int len = getLen(string, j, k);
				sum += len + 1;
			}
		}
		return sum;
	}

	private static int getLen(String string, int j, int k) {
		int len = 0;
		int n = string.length();
		while (j >= 0 && k < n && string.charAt(k) == string.charAt(j)) {
			len++;
			j--;
			k++;
		}
		return len;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String string = scanner.nextLine();
		scanner.close();
		// int n = string.length();
		// boolean[][] dp = new boolean[n][n];
		// int sum = 0;
		// for (int i = n - 1; i >= 0; i--) {
		// dp[i][i] = true;
		// sum++;
		// for (int j = i + 1; j < n; j++) {
		// if (string.charAt(i) == string.charAt(j)) {
		// if (j == i + 1) {
		// dp[i][j] = true;
		// } else {
		// dp[i][j] = dp[i + 1][j - 1];
		// }
		// if (dp[i][j]) {
		// sum++;
		// }
		// }
		// }
		// }
		// System.out.println(sum);
		System.out.println(getCount(string));
	}
}
